ποΈGitΠ―ΡΠ°ποΈ
.agent_memory/session_context.md f5e5fb6da63ee85e64dbbe19a519a5a3deccd408 (f5e5fb6d) Text, 9.63 KB
Agent Session Context - Meshtastic Android
This is a dated, append-only handover log. Add new entries at the TOP.
Do NOT edit or remove previous entries β stale state claims cause agent confusion.
Format: ## YYYY-MM-DD β <summary>
2026-05-12 β Implemented Apple alignment for docs feature (FR-038)
β’ Branch: T383838feat/20260507-161858-app-docs-markdown
β’ Gap analysis against T383838meshtastic-apple completed. Implemented 4 alignment items:
1. Per-page TOC icons via T383838DocPageIconResolver.kt mapping T383838iconId to T383838MeshtasticIcons
2. New T383838docs/user/signal-meter.md (RSSI vs SNR, bar-level criteria, LoRa signal concepts)
3. New T383838docs/user/units-and-locale.md (automatic metric/imperial via T383838MetricFormatter)
4. New T383838.github/workflows/docs-staleness.yml (advisory PR comments for UI changes without doc updates)
β’ Added T383838iconId: String? field to T383838DocPage and T383838KeywordIndexEntry models
β’ Updated T383838DocBundleLoader with iconId for all 24 pages plus 2 new entries (signal-meter, units-and-locale)
β’ Updated T383838DocsBrowserScreen to show leading icons in TOC list items
β’ Marked T061-T085 as completed in tasks.md (were implemented in prior session)
β’ Added Phase 9 (T200-T206) for Apple alignment tasks β all marked complete
β’ Skipped Apple-only features: watch, carplay, translate, TipKit, SwiftData docs
β’ Verified: T383838spotlessApply, T383838detekt, T383838assembleDebug, T383838compileKotlinJvm β all green
2026-05-11 β Migrated feature/intro UI to commonMain
β’ Moved intro onboarding UI composables and nav graph from T383838feature/intro/src/androidMain/ into T383838feature/intro/src/commonMain/, adding shared T383838IntroPermissions and T383838IntroSettingsNavigator interfaces plus a common T383838introGraph Navigation 3 extension.
β’ Refactored T383838AppIntroductionScreen into a thin Android host that provides Android permission/settings adapters via composition locals, and added T383838AndroidIntroPermissions, T383838AndroidIntroSettingsNavigator, and JVM desktop no-op stubs.
β’ Verified with T383838./gradlew spotlessApply :feature:intro:compileKotlinJvm :feature:intro:compileAndroidMain.
2026-05-11 β Added Esp32OtaUpdateHandler common tests
β’ Created T383838feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/ota/Esp32OtaUpdateHandlerTest.kt.
β’ Covered WiFi OTA success flow, download/upload progress reporting, connection-drop error handling, hash rejection, verification timeout, and cancellation propagation.
β’ Validation note: per task instruction, no Gradle commands were run.
2026-05-11 β Added profile import/export round-trip coverage
β’ Created T383838feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/radio/ProfileRoundTripTest.kt.
β’ Covered T383838RadioConfigViewModel.exportProfile() β T383838importProfile() round trips using the real T383838ExportProfileUseCase and T383838ImportProfileUseCase with an in-memory T383838FileService test double.
β’ Added representative, empty, and partially populated T383838DeviceProfile cases, asserting message equality and stable protobuf bytes across re-export.
β’ Validation note: per task instruction, no Gradle commands were run.
2026-05-11 β Added DirectRadioControllerImpl common tests
β’ Created T383838core/service/src/commonTest/kotlin/org/meshtastic/core/service/DirectRadioControllerImplTest.kt.
β’ Covered service-repository flow delegation, send message/send shared contact behavior, remote config request delegation, location stop, and device address updates.
β’ Validation note: T383838./gradlew --no-configuration-cache :core:service:allTests is currently blocked by pre-existing compile failures in T383838core/network (T383838MQTTRepositoryImpl unresolved T383838KEEPALIVE_SECONDS) and downstream T383838core/data unresolved T383838org.meshtastic.core.network symbols.
2026-05-11 β Added DatabaseManager withDb retry host test
β’ Created T383838core/database/src/androidHostTest/kotlin/org/meshtastic/core/database/DatabaseManagerWithDbRetryTest.kt.
β’ Covered the concurrent T383838withDb() retry path by pausing an in-flight query, switching to a new DB, closing the old pool, and asserting the retried query succeeds against the new DB.
β’ Verified with T383838./gradlew --no-configuration-cache :core:database:spotlessApply :core:database:testAndroidHostTest --tests "org.meshtastic.core.database.DatabaseManagerWithDbRetryTest"
and T383838./gradlew --no-configuration-cache :core:database:spotlessCheck :core:database:testAndroidHostTest.
2026-05-11 β Expanded MQTT repository coverage
β’ Extended T383838core/network/src/commonTest/kotlin/org/meshtastic/core/network/repository/MQTTRepositoryImplTest.kt
with topic construction, JSON/protobuf decoding, reconnect retry, subscription retry, and connection-state coverage.
β’ Added internal T383838MqttClientSession / T383838MqttClientSetup test hook plus T383838updateConnectionState() in
T383838core/network/src/commonMain/kotlin/org/meshtastic/core/network/repository/MQTTRepositoryImpl.kt to exercise repository behavior without a real broker.
β’ Verified with T383838./gradlew --no-configuration-cache :core:network:allTests.
2026-05-11 β Added RadioConfigViewModel MQTT probe tests
β’ Extended T383838feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/radio/RadioConfigViewModelTest.kt
with MQTT probe success, timeout, thrown-exception-to-Other, and clear/reset coverage.
β’ Verified with T383838./gradlew --no-configuration-cache :feature:settings:jvmTest --tests "org.meshtastic.feature.settings.radio.RadioConfigViewModelTest".
2026-05-11 β Added MeshRouterImpl accessor routing tests
β’ Created T383838core/data/src/commonTest/kotlin/org/meshtastic/core/data/manager/MeshRouterImplTest.kt.
β’ Covered lazy routing access for action-handler send/request/admin calls, traceroute handler access, and service-action passthrough.
β’ Verified with T383838./gradlew --no-configuration-cache :core:data:allTests.
2026-05-11 β Added SettingsViewModel saveDataCsv coverage
β’ Extended T383838feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/SettingsViewModelTest.kt
with T383838saveDataCsv writes filtered export via file service.
β’ The new test seeds T383838FakeNodeRepository + T383838FakeMeshLogRepository, captures the T383838FileService.write()
sink with Mokkery, and verifies filtered CSV output from the real T383838ExportDataUseCase.
β’ Verified with T383838./gradlew --no-configuration-cache :feature:settings:jvmTest --tests "org.meshtastic.feature.settings.SettingsViewModelTest"
after running T383838:feature:settings:spotlessApply.
2026-05-11 β Added CompassViewModel accuracy edge-case tests
β’ Extended T383838feature/node/src/commonTest/kotlin/org/meshtastic/feature/node/compass/CompassViewModelTest.kt
with PDOP-only, HDOP+VDOP, HDOP-only, precision-bits fallback, missing accuracy metadata,
zero-distance angular error, and very-small-distance angular error coverage.
β’ Validation note: T383838:feature:node:allTests still fails on the pre-existing
T383838MetricsViewModelTest.saveEnvironmentMetricsCSV writes correct data Turbine timeout in JVM and Android host tests.
The new CompassViewModel tests pass in the same run.
2026-05-11 β Added Node domain model tests
β’ Created T383838core/model/src/commonTest/kotlin/org/meshtastic/core/model/NodeTest.kt.
β’ Covered T383838isOnline, T383838distance, T383838bearing, T383838colors, T383838createFallback, T383838getRelayNode, T383838isUnknownUser, T383838validPosition, T383838hasPKC, and T383838mismatchKey.
β’ Validation blockers: T383838:core:model:allTests currently fails on pre-existing T383838DataPacketTest iOS compile errors, and direct T383838NodeTest execution hits an existing class-version mismatch in T383838core:common helpers.
2026-05-11 β Added HeartbeatSender transport tests
β’ Created T383838core/network/src/commonTest/kotlin/org/meshtastic/core/network/transport/HeartbeatSenderTest.kt.
β’ Covered encoded heartbeat payloads, nonce sequencing, interval-driven scheduling, cancellation, zero-interval behavior, and restart semantics using coroutine virtual time.
β’ Verified with T383838./gradlew --console=plain --no-configuration-cache :core:network:allTests.
2026-05-11 β Added BaseMapViewModel waypoint expiration tests
β’ Extended T383838feature/map/src/commonTest/kotlin/org/meshtastic/feature/map/BaseMapViewModelTest.kt.
β’ Added coverage for future, boundary (T383838expire == now), never-expiring (T383838expire == 0), and mixed waypoint filtering.
β’ Verified with T383838./gradlew --no-daemon --no-configuration-cache :feature:map:spotlessCheck :feature:map:allTests.
2026-05-03 β Switched Gradle GC to G1GC
β’ Replaced T383838-XX:+UseZGC with T383838-XX:+UseG1GC in T383838gradle.properties to resolve "not supported" error.
β’ Added T383838-XX:+ParallelRefProcEnabled for better build performance.
β’ Verified with Gradle sync.
2026-05-02 β CI cost-control PR review fixes
β’ Applied PR review feedback: encoding fixes in sort-strings.py, NUL-delimited staged-files loop
in ai-guardrail.sh, installation instructions added, typo fix in strings.xml, command order
fixed in AGENTS.md, narrowed .aiexclude/.gitattributes patterns, allTests added to SKILL.md.
2026-04-XX β Token Mitigation (Phase 1-3)
β’ T383838.copilotignore and T383838.aiexclude updated with stricter ignore rules.
β’ T383838AGENTS.md modularized to ~3KB base; detailed rules moved to T383838.skills/.
β’ T383838scripts/ai-guardrail.sh added to prevent binary/log leaks (installation: see script header).
β’ CI Cost Control skill added at T383838.skills/ci-cost-control/SKILL.md.
Golden Context (stable across sessions)
β’ Always check T383838.skills/compose-ui/strings-index.txt before reading T383838strings.xml.
β’ Run T383838python3 scripts/sort-strings.py after adding strings to keep the index organized.
β’ Always check T383838gh run list before pushing.
β’ Pre-commit hook T383838scripts/ai-guardrail.sh protects against binary leaks (see script for install).
Served by rngit 1.5.2 - Generated in 0.03s